This module implements the `/ipfs/ping/1.0.0` protocol.
The ping protocol can be used as a simple application-layer health check
for connections of any [`Transport`] as well as to measure and record
round-trip times.
# Usage
The [`Behaviour`] struct implements the [`NetworkBehaviour`] trait.
It will respond to inbound ping requests and periodically send outbound ping requests on every established connection.
It is up to the user to implement a health-check / connection management policy based on the ping protocol.
For example:
- Disconnect from peers with an RTT > 200ms
- Disconnect from peers which don't support the ping protocol
- Disconnect from peers upon the first ping failure
Users should inspect emitted [`Event`]s and call APIs on [`Swarm`]:
- [`Swarm::close_connection`](libp2p_swarm::Swarm::close_connection) to close a specific connection
- [`Swarm::disconnect_peer_id`](libp2p_swarm::Swarm::disconnect_peer_id) to close all connections to a peer
[`Swarm`]: libp2p_swarm::Swarm
[`Transport`]: libp2p_core::Transport